from Usuario import *
import os  
from SaidadeDados import *


class CadastroGerente ():

     def __init__ (self):                      
          arquivo = open ('Gerente.txt', 'r')
          self._gerente = arquivo.readlines ()
          arquivo.close ()
          
     def getGerente (self):
          return self._gerente

     def setGerente(self, gerente):
          self._gerente = gerente
          
     def adicionarGerente (self, cpf, senha, nome):
               novogerente = Gerente (cpf, senha)
               novogerente.setNomeGerente ( nome )
               self._gerente.append (str (str (novogerente.getCpf ())) + '\t' + str (novogerente.getSenha ())+'\t' + str (novogerente.getNomeGerente ()) + '\n')
               self.adicionarNoArquivo (self._gerente)
               SaidadeDados ().saidaCadastroAdicionado ()

     def removerGerente (self, cpf, senha):
          for linha in self._gerente :
               dados_gerente = linha.rsplit ('\t')
               if str (cpf) == dados_gerente [0] and str (senha) == dados_gerente [1]:
                    os.remove ('Gerente.txt')               
                    SaidadeDados ().saidaCadastroExcluido ()
                    break
               else:
                    SaidadeDados ().saidaLogonInvalido ()

# FUNCAO AUXILIAR, QUE E USADA NAS OUTRAS FUNCOES
     def adicionarNoArquivo (self,lista):                      
          arquivo = open ('Gerente.txt', 'w')
          arquivo.writelines (lista)
          arquivo.close ()

     def alterarSenha (self, senha, novasenha):
          dados_gerente = self._gerente [0].rsplit ('\t')

          if dados_gerente [1] == senha:
               dados_gerente [1] = str (novasenha)
               self.adicionarNoArquivo (dados_gerente [0] +'\t' +dados_gerente [1] + '\n')
               SaidadeDados ().saidaAlteracaoRealizada ()
               return True
          
          else:
               SaidadeDados ().saidaSenhaIncorreta ()
               return False



class CadastroFuncionarios ():

     def __init__ (self):
          arquivo = open ('Funcionarios.txt', 'r')
          self._funcionarios = arquivo.readlines ()
          arquivo.close ()

     def getFuncionarios (self):
          return self._funcionarios

     def setFuncionarios(self, funcionarios):
          self._funcionarios = funcionarios
          

# FUNCAO UTILIZADA PARA VERIFICAR SE ESTA CADASTRANDO UM CPF QUE JA EXISTE NO SISTEMA.
     def verificarCPF (self, cpf):   
          if self._funcionarios == []:
               return True

          else:
               for funcionario in self._funcionarios:
                    dados_funcionario = funcionario.rsplit ('\t')
                    
                    if dados_funcionario [0] == cpf:
                         SaidadeDados ().saidaJaExisteCadastro ()
                         return False

                    else:
                         return True

# FUNCAO QUE ADICIONA O FUNCIONARIO, DEPOIS DE TER VERIFICADO SE O CPF NAO ESTAVA CADASTRADO.               
     def adicionarFuncionario (self, cpf, senha, nome):
          if self.verificarCPF (cpf) == True:
               novofuncionario = Funcionario (cpf, senha,nome)
               nome = novofuncionario.setFuncionarios (nome)
               self._funcionarios.append (str (novofuncionario.getCpf ()) +'\t' +str (novofuncionario.getSenha ()) + '\t' + str (novofuncionario.getNome ()) + '\n')
               self.adicionarNoArquivo (self._funcionarios)
               SaidadeDados ().saidaCadastroAdicionado ()

     def removerFuncionario (self, cpf):
          for linha in self._funcionarios:
               dados_funcionario = linha.rsplit ('\t')
               if str (cpf) == dados_funcionario [0]:
                    self._funcionarios.remove (linha)
                    self.adicionarNoArquivo (self._funcionarios)
                    SaidadeDados ().saidaCadastroExcluido () 
                    break

          else:
               SaidadeDados ().saidaCadastroNaoEncontrado ()
               

     def alterarSenha (self, senha, novasenha):
          for funcionario in self._funcionarios:
               dados_funcionario = funcionario.rsplit ('\t')    # CADA LINHA SE TRANSFORMA NUMA LISTA DE 2 ATRIBUTOS(CPF,SENHA)

               if dados_funcionario [1] == senha:
                    senha = str (novasenha)
                    self._funcionarios.append (dados_funcionario [0] +'\t' + senha + '\t' + dados_funcionario [2] + '\n')
                    self._funcionarios.remove (funcionario)
                    self.adicionarNoArquivo (self._funcionarios)
                    SaidadeDados ().saidaAlteracaoRealizada ()
                    return True

          else:
               SaidadeDados ().saidaSenhaIncorreta ()
               return False
               
 def alterarSenha (self, senha, novasenha):
          for funcionario in self._funcionarios:
               dados_funcionario = funcionario.rsplit ('\t')    # CADA LINHA SE TRANSFORMA NUMA LISTA DE 2 ATRIBUTOS(CPF,SENHA)

               if dados_funcionario [1] == senha:
                    senha = str (novasenha)
                    self._funcionarios.append (dados_funcionario [0] +'\t' + senha + '\t' + dados_funcionario [2] + '\n')
                    self._funcionarios.remove (funcionario)
                    self.adicionarNoArquivo (self._funcionarios)
                    SaidadeDados ().saidaAlteracaoRealizada ()
                    return True

          else:
               SaidadeDados ().saidaSenhaIncorreta ()
               return False
               


               

     def adicionarNoArquivo (self,lista):
          arquivo = open ('Funcionarios.txt', 'w')
          arquivo.writelines (lista)
          arquivo.close ()

                    
 
